package com.algrithom.sort.bucket;

import java.util.Arrays;

/**
 * 颜色排序
 *
 * @author think
 * @version 1.0.0
 * @since 2020/1/1
 */
public class ColorSort {
    
    public static void main(String[] args){
        int[] array = {1,2,0}; // {2,2}
        sortColors(array);
        System.out.println(Arrays.toString(array));
    }
    
    public static void sortColors(int[] nums){
        int lt = -1;
        int gt = nums.length;
        int len = nums.length;
        if (len == 1) {
            return;
        }
        for (int i = 0; i < gt; i++) {
            if (nums[i] == 0) {
                lt = lt + 1;
                if (nums[i] < nums[lt]) {
                    nums[lt] = nums[lt] ^ nums[i];
                    nums[i] = nums[lt] ^ nums[i];
                    nums[lt] = nums[lt] ^ nums[i];
                }
            } else if (nums[i] == 2) {
                gt = gt - 1;
                if (nums[i] > nums[gt]) {
                    nums[gt] = nums[gt] ^ nums[i];
                    nums[i] = nums[gt] ^ nums[i];
                    nums[gt] = nums[gt] ^ nums[i];
                }
            } else {
                if (nums[len - 1] < nums[0]) {
                    nums[len - 1] = nums[len - 1] ^ nums[0];
                    nums[0] = nums[len - 1] ^ nums[0];
                    nums[len - 1] = nums[len - 1] ^ nums[0];
                }
            }
        }
    }
}
